package ciyuan.wrap;

import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;

public abstract class Wrapper {

    public static Wrapper INSTANCE;

    public abstract void reloadConfig();

    public abstract void logMsg(String msg);

    public abstract boolean playerIsOnline(String playerName);

    public abstract File getDataFolder();

    public abstract boolean isOp(String playerName);

    public abstract void asyncKickPlayer(String playerName, String reason);

    public abstract void disableCurrentPlugin();

    public abstract boolean hasPermission(String playerName, String permission);

    public abstract List<String> getOnlinePlayerNames();

    public abstract Object loadConfig();

    public abstract void saveConfig(Object config);

    public abstract Object loadConfiguration(File dataFile);

    public abstract void saveConfiguration(Object config, File dataFile) throws IOException;

    public abstract boolean configContainsKey(Object config, String key);

    public abstract void configSetValue(Object config, String key, Object value);

    public abstract List<String> configGetStringList(Object config, String key);

    public abstract String configGetString(Object config, String key);

    public abstract int configGetInt(Object config, String key);

    public abstract long configGetLong(Object config, String key);

    public abstract boolean configGetBoolean(Object config, String key);

    public abstract void configAddDefault(Object config, String key, Object value);

    public abstract String getPluginVersion();

    public abstract void sendMsgToSender(Object sender, String msg);

    public abstract int getGameServerPort();

    public abstract String getServerVersion();

    public abstract Map<String, String> getOnlinePlayerAddress();

    public abstract String executeCommand(String command);

}
